package com.ddh.codeduck.infra.websocket.config;

// 导入必要的类和接口

import com.ddh.codeduck.infra.websocket.handler.UserWebSocketHandler;
import com.ddh.codeduck.infra.websocket.intercetor.WebSocketHandshakeInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

import javax.annotation.Resource;

/**
 * WebSocket 配置类，用于注册 WebSocket 处理器并启用 WebSocket 功能
 */
@Configuration  // 表示这是一个配置类，Spring 容器会自动加载其中的 Bean 配置
@EnableWebSocket  // 启用 WebSocket 支持，允许注册 WebSocket 处理器
public class WebSocketConfig implements WebSocketConfigurer {

    @Resource
    private WebSocketHandshakeInterceptor webSocketHandshakeInterceptor;

    @Resource
    private UserWebSocketHandler userWebSocketHandler;

    /**
     * 注册 WebSocket 处理器的方法
     *
     * @param registry WebSocket 处理器注册表，用于添加处理器并配置路径和跨域设置
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 添加 WebSocket 处理器，并指定访问路径为 "/chat"
        registry.addHandler(userWebSocketHandler, "/chat")
                .addInterceptors(webSocketHandshakeInterceptor)
                // 设置允许的来源（跨域），"*" 表示允许所有域名访问
                .setAllowedOrigins("*");
    }
}
